#! /usr/bin/python
# -*- coding: utf-8 -*-

__author__="dmeziere"
__date__ ="$16 oct. 2011 20:40:03$"

try:
    from freefax import FreeFax
except ImportError:
    print "Impossible d'importer le module freefax. Est-il installé ?"
    exit(1)

try:
    from freefax_cli_defaults import FreeFaxCLI_Defaults
except ImportError:
    print "Impossible d'importer le module freefax_cli_defaults. Est-il installé ?"
    exit(1)

try:
    from optparse import OptionParser
except ImportError:
    print "Impossible d'importer le module optparse. Est-il installé ?"
    exit(1)

class FreeFaxCLI():

    def __init__(self):

        # Traitement des options de la ligne de commande
        # http://docs.python.org/library/optparse.html
        # Attention: Deprecated sous Python 2.7
        parser = OptionParser(
            usage="usage: %prog [options]",
            version="%prog 0.1b"
        )

        parser.add_option(
            "-v",
            "--verbose",
            action = "store_true",
            dest = "verbose",
            default = None,
            help = u"Affiche des informations supplémentaires"
        )

        parser.add_option(
            "-u",
            "--username",
            dest="username",
            help=u"Identifiant du compte Free ADSL",
            metavar="USERNAME"
        )

        parser.add_option(
            "-p",
            "--password",
            dest="password",
            help=u"Mot de passe Free",
            metavar="PASSWORD"
        )

        parser.add_option(
            "-d",
            "--destinataire",
            dest="destinataire",
            help=u"Numéro du destinataire",
            metavar="DESTINATAIRE"
        )

        parser.add_option(
            "-f",
            "--fichier",
            dest="fichier",
            help=u"Fichier à envoyer",
            metavar="FICHIER"
        )

        parser.add_option(
            "-m",
            "--masque",
            action="store_true",
            dest="masque",
            default=None,
            help=u"Masque le numéro de l'expéditeur. Désactivé par défaut"
        )

        parser.add_option(
            "-r",
            "--rapport",
            action="store_true",
            dest="rapport",
            default=None,
            help=u"Envoit un rapport d'envoi par email. Désactivé par défaut"
        )

        parser.add_option(
            "-R",
            "--resolution",
            action="store_true",
            dest="resolution",
            default=None,
            help=u"Envoit le fax en haute résolution. Désactivé par défaut"
        )

	(options, args) = parser.parse_args()

        # Chargement des paramètres par défaut.
        defaults = FreeFaxCLI_Defaults()

        # Initialisation du client FreeFax avec les options par défaut.
        freefax = FreeFax(defaults)

        # Les options par défaut sont écrasées par celles en ligne de commande.
        if options.verbose == None:
            options.verbose = defaults.verbose

        if options.username != None:
            freefax.set_username(options.username)

        if options.password != None:
            freefax.set_password(options.password)

        if options.destinataire != None:
            freefax.set_destinataire(options.destinataire)

        if options.fichier != None:
            freefax.set_fichier(options.fichier)

        if options.masque != None:
            freefax.set_masque(options.masque)

        if options.rapport != None:
            freefax.set_rapport(options.rapport)

        if options.resolution != None:
            freefax.set_resolution(options.resolution)

        # Vérification des paramètres obligatoires.
        if freefax.get_username() == '' or freefax.get_password() == '' or freefax.get_destinataire() == '' or freefax.get_fichier() == '':

            parser.print_help()
            print u""

            if freefax.get_username() == '':
                print u"Nom d'utilisateur obligatoire."

            if freefax.get_password() == '':
                print u"Mot de passe obligatoire."

            if freefax.get_destinataire() == '':
                print u"Numéro du destinataire obligatoire."

            if freefax.get_fichier() == '':
                print u"Fichier à faxer obligatoire."

            exit(1)

        # Envoit du fax
        if freefax.action_fax(options.verbose):
            if options.verbose:
                print "Fax: OK"
        else:
            print "Fax: KO"
            exit(1)

        exit(0)

if __name__ == "__main__":
    FreeFaxCLI()

